package com.keitaitoys.fonteditor.gui.editor;

import java.awt.Component;
import java.util.Set;
import java.util.TreeSet;

import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

import com.keitaitoys.fonteditor.core.LocaleManager;
import com.keitaitoys.fonteditor.core.Manager;
import com.keitaitoys.fonteditor.event.LocaleChangeListener;
import com.keitaitoys.fonteditor.font.Symbol;

public class CharPopupMenu extends JPopupMenu {

	//////////////////////////////////////////////////////////////////////
	// Description ///////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Consts ////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Variables /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Constructor ///////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public CharPopupMenu() {
		
		Manager manager = Manager.getInstance();
		manager.registerCharPopupMenu(this);

		init();
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	private void init() {
		
		setEnabled(true);
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public void populate(Set<Symbol> symbols) {
		
		LocaleManager localeManager = LocaleManager.getInstance();
		
		Component[] components = getComponents();
		
		for(Component component : components) {
			
			if(component instanceof LocaleChangeListener) {
				localeManager.removeLocaleChangeListener((LocaleChangeListener)component);
			}
			
			remove(component);
		}
		
		Set<Symbol> sortedSymbols = new TreeSet<Symbol>(symbols);
		
		for(Symbol symbol : sortedSymbols) {
			
			JMenuItem charMenuItem = new CharMenuItem(symbol);
			add(charMenuItem);
		}
	}
}
